23

» WarCraft 3 / Не переноситься кэш

Похожие вопросы:

ответ
Нет, тока кешь - тем более лимита на число значений в файле кеша нету, хоть миллион значений заноси.
По мимо героя, что тебе надо :
  1. Можно пробовать Preload Exploit, но если чесно - кешь удобнее, особенно для гуишников.
ответ
8gabriel8, последний созданный кэш содержит кэш который был создан в данной карте (что логично)
следовательно тебе надо заново создавать кэш в каждой миссии
желательно в отдельном триггере с событием прошло 0 секунд

23

» WarCraft 3 / РПГ камера

Похожие вопросы:

ответ
1 Есть же функиця Камера - rotate camera around point.
2 Да
ответ
Смею предположить, что все что ниже уровня моста на скринах - декор под пустой текстурой (альфа-тайл)

23

» WarCraft 3 / Актуальность версии Warcraft III

Похожие вопросы:

ответ
Уже давно всё придумали. Вот ресурс. Необходимо добавить только детект для версии 1.32.
ScorpioT1000:
там 24 игрока, но константу не обновили
Всё там обновили, теперь у этой константы не hardcoded значение, а значение из нативки. Для карт, созданных в WE до 1.29, нативка возвращает 12, после - 24.
    // Game constants
    constant integer   bj_MAX_INVENTORY                 =  6
    constant integer   bj_MAX_PLAYERS                   =  GetBJMaxPlayers()
    constant integer   bj_PLAYER_NEUTRAL_VICTIM         =  GetBJPlayerNeutralVictim()
    constant integer   bj_PLAYER_NEUTRAL_EXTRA          =  GetBJPlayerNeutralExtra()
    constant integer   bj_MAX_PLAYER_SLOTS              =  GetBJMaxPlayerSlots()
    constant integer   bj_MAX_SKELETONS                 =  25
    constant integer   bj_MAX_STOCK_ITEM_SLOTS          =  11
    constant integer   bj_MAX_STOCK_UNIT_SLOTS          =  11
    constant integer   bj_MAX_ITEM_LEVEL                =  10
Ответ удалённому комментарию ниже: так как HandleId равно -1, то объекта нет, потому и уничтожать не нужно.

23

» WarCraft 3 / Плавающий текст, следующий над юнитом (Reforged)

Похожие вопросы:

ответ
Атака оглушением вызывает подобную ерунду. Да и не только.
Например в доте бы вылетало сообщение 0 при атаке имея МКБ - сообщался бы урон, урон от микробаша, если бы выпал и 0.00 от нулевого критического удара.
Решение простое - поставь условие, что полученный урон больше 0.00, тогда только выводить.
ответ
но когда срабатывает одновременно в некоторых случаях текст остается, в чем причина не знаю
причина в бж функциях
избавься от бж и всё норм будет

23

» WarCraft 3 / Как создавать приказы юнитам?

Похожие вопросы:

ответ
UniverseRuler, в доте 6-6 использованы игроки 13 и 14
тебе нужно просто сохранять приказ отданный триггерно(ты ведь ими будешь юнитами управлять)
и восстанавливать его при получение приказа для игрока
для этого нужна буленовская переменная для определения триггерный это приказ или нет
и структура/хэш/юзердата для сохранения приказа
UniverseRuler:
еще остались асы картостроения, но а сейчас начинаю думать, что их все таки нету
если ас картостроения это человек который воплощает все ваши фантазии в жизнь то тут таких нету и не было
ещё можно создавать всех юнитов за 1 резервного игрока
а автоатаку делать триггерно
этот вариант самый лучший но то просто не сможешь его сделать
ибо нужны джасс+алгоритмы+структуры/хэш
а ты судя по всему ничего из этого не знаешь
ответ
pro100master, но ведь это собьет и его текущие приказы?

Upd.:Я понял в чем проблема.
Я хочу чтоб можно было использовать способности юнита, при этом чтоб были недоступны атака/перемещение итд., а ведь это тоже его способности...
Короче я загнал себя в угол.
Пожалуй пойду по пути создания торговца-здания.
Но если у кого есть решение моей дилемы - буду рад!
ответ
после разложения костей юниты сами выгружаются из памяти
функция "wait" то же вызывает утечки
она не вызывает утечки, она сама по себе кривая и не подходит под большинство задач
если создать переменную "Point" типа "точка" и изначально задать ей положение центр области "Final", а потом обращаться уже к этой переменной "Point" в триггере событие "боевая единица входит в область "Start", действие "отдать приказ боевой единице следовать в "Point" , то новые точки создаваться не будут?
да
только в гуи еще и создание юнитов утекает тоже насколько я помню, надо тоже заранее точку делать
впринципе можно было бы обойтись одной точкой на все действия, но вам видимо пока рано

23

» WarCraft 3 / Контроль сохранений

Похожие вопросы:

ответ
pro100master, но ведь это собьет и его текущие приказы?

Upd.:Я понял в чем проблема.
Я хочу чтоб можно было использовать способности юнита, при этом чтоб были недоступны атака/перемещение итд., а ведь это тоже его способности...
Короче я загнал себя в угол.
Пожалуй пойду по пути создания торговца-здания.
Но если у кого есть решение моей дилемы - буду рад!

23

» WarCraft 3 / Бафф Ловчий.

Похожие вопросы:

ответ
Кет, баф накладывается когда прилетает снаряд
при касте бафа нету
поэтому он и не снимается
ответ
SetUnitPropWindow
Спс, что то раньше этой нативки не видел, ну пока сделал на пересоздании предмета, там посмотрим.

23

» WarCraft 3 / Критическая ошибка в карте

Похожие вопросы:

ответ
nvc123:
PT153, в карте утечки
утечки может вызывать всё что угодно кроме чисел и игроков
Да, уже я выяснил, что в карте были утечки multiboard item, из-за отсутствия MultiboardReleaseItem.
ответ
GRESHNIK1, ошибку вызывает каждая из 3 моделей?
или лишь 1 из них?
ну а вообще критует из за того что модель кривая
либо брось это дело либо сконверти их в mdl и правь через блокнот
ответ
Уже ничего не поделаешь, скорее всего. На будущее - не давать областям и другим объектам названий на русском.

23

» WarCraft 3 / Нужна иконка!

Похожие вопросы:

ответ
Вот, держи)
ответ
RAKAJL, "Графика - Пиктограмма: игровой интерфейс".
ответ
Все что есть коснанты являет разрешеным а остальные пока напрямую обратить нельзя (некоторые работали) Моли близзарду чтобы все равкод поля открыли
ответ
Ты прав в ПО и ИИ их нет, достать пути можно с помощью war3.mpq, держи:
иконки
ReplaceableTextures\CommandButtons\BTNRallyPointUndead.blp
ReplaceableTextures\CommandButtons\BTNRallyPointNightElf.blp
ReplaceableTextures\CommandButtons\BTNOrcRallyPoint.blp
модели флага
UI\Feedback\RallyPoint\NightElfRallyFlag.mdx
UI\Feedback\RallyPoint\OrcRallyFlag.mdx
UI\Feedback\RallyPoint\UndeadRallyFlag.mdx

И да, вот твоя синяя иконка - ReplaceableTextures\CommandButtons\BTNSelectUnit.blp

23

» WarCraft 3 / Вопрос по системе Save/Load

Похожие вопросы:

ответ
Кто-то объяснит почему 36 символьная система? можно использовать разные case написания ещё ведь. Да и еще кучу других символов. Почему именно 36, непонятно..
theGCI, NickIAm тебе вроде нормальный гайд выложил, там доступно написано.
NickIAm:
Используя только английский язык например можно задействовать 94 символа.. как пример
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&* ()_+=,.<>?/:;'{}[]|\~` 
function SaveLoad_InitialSetup takes nothing returns nothing
    local integer i = 0
    local integer j = 0

    loop
        set udg_SaveLoad_Compress[i + 48] = j
        set udg_SaveLoad_Uncompress[i] = i + 48
        set j = j + 1
        set i = i + 1
        exitwhen i >= 10
    endloop
    set i = 0
    loop
        set udg_SaveLoad_Compress[i + 97] = j
        set udg_SaveLoad_Compress[i + 65] = j + 26
        set udg_SaveLoad_Uncompress[i + 10] = i + 97
        set udg_SaveLoad_Uncompress[i + 26 + 10] = i + 65
        set j = j + 1
        set i = i + 1
        exitwhen i >= 26
    endloop
endfunction

function SaveLoad_Id2CId takes integer n returns integer
    local integer i = n / (256 * 256 * 256)
    local integer r
    set n = n - i * (256 * 256 * 256)
    set r = udg_SaveLoad_Compress[i]
    set i = n / (256 * 256)
    set n = n - i * (256 * 256)
    set r = r * 64 + udg_SaveLoad_Compress[i]
    set i = n / 256
    set r = r * 64 + udg_SaveLoad_Compress[i]
    return r * 64 + udg_SaveLoad_Compress[n - i * 256]
endfunction

function SaveLoad_CId2Id takes integer n returns integer
    local integer i = n / (64 * 64 * 64)
    local integer r
    set n = n - i * (64 * 64 * 64)
    set r = udg_SaveLoad_Uncompress[i]
    set i = n / (64 * 64)
    set n = n - i * (64 * 64)
    set r = r * 256 + udg_SaveLoad_Uncompress[i]
    set i = n / 64
    set r = r * 256 + udg_SaveLoad_Uncompress[i]
    return r * 256 + udg_SaveLoad_Uncompress[n - i * 64]
endfunction


function SaveLoad_Unit2Integer takes unit u returns integer
    local integer i = 0
    local integer n = GetUnitTypeId(u)
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    loop
        set i = i + 1
        exitwhen i > udg_SaveLoad_Heroes_LastIndex
        if udg_SaveLoad_Heroes[i] == n then
            return i
        endif
    endloop
    return SaveLoad_Id2CId(n)
endfunction
function SaveLoad_Integer2Unit takes integer i returns integer
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    if i <= udg_SaveLoad_Heroes_LastIndex then
        return udg_SaveLoad_Heroes[i]
    endif
    return SaveLoad_CId2Id(i)
endfunction

function SaveLoad_Item2Integer takes item t returns integer
    local integer i = 0
    local integer n = GetItemTypeId(t)
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    loop
        set i = i + 1
        exitwhen i > udg_SaveLoad_Items_LastIndex
        if udg_SaveLoad_Items[i] == n then
            return i
        endif
    endloop
    return SaveLoad_Id2CId(n)
endfunction
function SaveLoad_Integer2Item takes integer i returns integer
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    if i <= udg_SaveLoad_Items_LastIndex then
        return udg_SaveLoad_Items[i]
    endif
    return SaveLoad_CId2Id(i)
endfunction

function SaveLoad_Ability2Integer takes integer a returns integer
    local integer i = 0
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    loop
        set i = i + 1
        exitwhen i > udg_SaveLoad_Abilities_LastIndex
        if udg_SaveLoad_Abilities[i] == a then
            return i
        endif
    endloop
    return SaveLoad_Id2CId(a)
endfunction
function SaveLoad_Integer2Ability takes integer i returns integer
    if udg_SaveLoad_Initialized == false then
        set udg_SaveLoad_Initialized = true
        call SaveLoad_InitialSetup()
    endif
    if i <= udg_SaveLoad_Abilities_LastIndex then
        return udg_SaveLoad_Abilities[i]
    endif
    return SaveLoad_CId2Id(i)
endfunction

function SaveLoad_Color takes string s returns string
    local integer i = StringLength(s)
    local string c
    local string r = ""

    loop
        set i = i - 1
        set c = SubString(s,i,i + 1)
        if c == "0" or c == "1" or c == "2" or c == "3" or c == "4" or c == "5" or c == "6" or c == "7" or c == "8" or c == "9" then
            set r = "|cffffcc00" + c + "|r" + r
        elseif c == "-" then
            set r = "|cffdddddd-|r" + r
        elseif c == "a" or c == "b" or c == "c" or c == "d" or c == "e" or c == "f" or c == "g" or c == "h" or c == "i" or c == "j" or c == "k" or c == "l" or c == "m" or c == "n" or c == "o" or c == "p" or c == "q" or c == "r" or c == "s" or c == "t" or c == "u" or c == "v" or c == "w" or c == "x" or c == "y" or c == "z" then    
            set r = "|cff00cc00" + c + "|r" + r
        elseif c == "A" or c == "B" or c == "C" or c == "D" or c == "E" or c == "F" or c == "G" or c == "H" or c == "I" or c == "J" or c == "K" or c == "L" or c == "M" or c == "N" or c == "O" or c == "P" or c == "Q" or c == "R" or c == "S" or c == "T" or c == "U" or c == "V" or c == "W" or c == "X" or c == "Y" or c == "Z" then    
            set r = "|cff3399ff" + c + "|r" + r
        else
            set r = c + r
        endif
        exitwhen i <= 0
    endloop
    return r
endfunction

function SaveLoad_EncodeChar takes string n returns integer
    local integer i = 0
    local string s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    local string s2 = "abcdefghijklmnopqrstuvwxyz"
    local string s3 = "0123456789"

    loop
        if SubString(s1,i,i + 1) == n then
            return i
        endif
        if SubString(s2,i,i + 1) == n then
            return i
        endif
        set i = i + 1
        exitwhen i >= 26
    endloop
    set i = 0
    loop
        if SubString(s3,i,i + 1) == n then
            return i
        endif
        set i = i + 1
        exitwhen i >= 10
    endloop
    return 0
endfunction

function SaveLoad_EncodeVerify takes string buffer returns integer
    local integer i = 0
    local integer j = 0
    local string name = GetPlayerName(GetTriggerPlayer())
    if udg_SaveLoad_UsePlayername == true then
        loop
            set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
            set i = i + 1
            exitwhen i >= StringLength(name)
        endloop
    endif
    set i = 0
    loop
        set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop
    return j
endfunction

function SaveLoad_EncodeValues takes nothing returns string
    local integer i
    local integer j
    local integer k
    local integer l
    local integer m
    local integer CodeLength = StringLength(udg_SaveLoad_Alphabet)
    local integer array a
    local string buffer = ""
    local string c = ""
    local integer skip = 0
    local integer CONST = 1000000
    local string abc = "0123456789"

    set i = 0
    loop
        set i = i + 1
        exitwhen i > udg_SaveCount
        set buffer = buffer + I2S(udg_Save[i]) + "-"
    endloop
    set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
    if udg_Save[1] == 0 then
        set buffer = "-" + buffer
    endif

    set i = 0
    loop
        set a[i] = 0
        set i = i + 1
        exitwhen i >= 100
    endloop

    set m = 0
    set i = 0
    loop
        set j = 0
        loop
            set a[j] = a[j] * 11
            set j = j + 1
            exitwhen j > m
        endloop

        set l = 0
        set c = SubString(buffer,i,i + 1)
        loop
            exitwhen SubString(abc,l,l + 1) == c
            set l = l + 1
            exitwhen l > 9
        endloop
        set a[0] = a[0] + l

        set j = 0
        loop
            set k = a[j] / CONST
            set a[j] = a[j] - k * CONST
            set a[j + 1] = a[j + 1] + k
            set j = j + 1
            exitwhen j > m
        endloop
        if k > 0 then
            set m = m + 1
        endif
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop

    set buffer = ""
    loop
        exitwhen m < 0
        set j = m
        loop
            exitwhen j <= 0
            set k = a[j] / CodeLength
            set a[j - 1] = a[j - 1] + (a[j] - k * CodeLength) * CONST
            set a[j] = k
            set j = j - 1
        endloop
        set k = a[j] / CodeLength
        set i = a[j] - k * CodeLength
        set buffer = buffer + SubString(udg_SaveLoad_Alphabet,i,i + 1)
        set a[j] = k
        if a[m] == 0 then
            set m = m - 1
        endif
    endloop

    set i = StringLength(buffer)
    set skip = 0
    set c = ""
    loop
        set i = i - 1
        set c = c + SubString(buffer,i,i + 1)
        set skip = skip + 1
        if skip == 4 and i > 0 then
            set c = c + "-"
            set skip = 0
        endif
        exitwhen i <= 0
    endloop
    return c
endfunction

function SaveLoad_DecodeValues takes string s returns boolean
    local integer i
    local integer j
    local integer k
    local integer l
    local integer SaveCode = 0
    local integer m
    local integer array a
    local string buffer = ""
    local integer CodeLength = StringLength(udg_SaveLoad_Alphabet)
    local integer skip = -1
    local integer CONST = 1000000
    local string abc = "0123456789-"
    local string c

    set i = 0
    loop
        set a[i] = 0
        set i = i + 1
        exitwhen i >= 100
    endloop

    set m = 0

    set i = 0
    loop
        set j = 0
        loop
            set a[j] = a[j] * CodeLength
            set j = j + 1
            exitwhen j > m
        endloop

        set skip = skip + 1
        if skip == 4 then
            set skip = 0
            set i = i + 1
        endif

        set l = CodeLength
        set c = SubString(s,i,i + 1)
        loop
            set l = l - 1
            exitwhen l < 1
            exitwhen SubString(udg_SaveLoad_Alphabet,l,l + 1) == c
        endloop
        set a[0] = a[0] + l

        set j = 0
        loop
            set k = a[j] / CONST
            set a[j] = a[j] - k * CONST
            set a[j + 1] = a[j + 1] + k
            set j = j + 1
            exitwhen j > m
        endloop
        if k > 0 then
            set m = m + 1
        endif
        set i = i + 1
        exitwhen i >= StringLength(s)
    endloop

    loop
        exitwhen m < 0
        set j = m
        loop
            exitwhen j <= 0
            set k = a[j] / 11
            set a[j - 1] = a[j - 1] + (a[j] - k * 11) * CONST
            set a[j] = k
            set j = j - 1
        endloop
        set k = a[j] / 11
        set i = a[j] - k * 11
        set buffer = SubString(abc,i,i + 1) + buffer
        set a[j] = k
        if a[m] == 0 then
            set m = m - 1
        endif
    endloop

    set i = 0
    set j = 0
    loop
        loop
            exitwhen i >= StringLength(buffer)
            exitwhen i > 0 and SubString(buffer,i,i + 1) == "-" and SubString(buffer,i - 1,i) != "-"
            set i = i + 1
        endloop
        if i < StringLength(buffer) then
            set k = i
        endif
        set SaveCode = SaveCode + 1
        set udg_Save[SaveCode] = S2I(SubString(buffer,j,i))
        set j = i + 1
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop

    set j = SaveLoad_EncodeVerify(SubString(buffer,0,k))
    set udg_SaveCount = SaveCode - 1
    if j == udg_Save[SaveCode] then
        return true
    endif
    return false
endfunction

function SaveLoad_Encode takes nothing returns string
    if udg_SaveLoad_CaseSensitive == false then
        set udg_SaveLoad_Alphabet = StringCase(udg_SaveLoad_Alphabet,true)
    endif
    return SaveLoad_Color(SaveLoad_EncodeValues())
endfunction

function SaveLoad_Decode takes string s returns boolean
    if udg_SaveLoad_CaseSensitive == false then
        set udg_SaveLoad_Alphabet = StringCase(udg_SaveLoad_Alphabet,true)
        set s = StringCase(s,true)
    endif
    if SaveLoad_DecodeValues(s) then
        call DisplayTextToPlayer(GetTriggerPlayer(),0,0,"")
        return true
    endif
    call DisplayTextToPlayer(GetTriggerPlayer(),0,0,"Decoding failed")
    return false
endfunction

23

» WarCraft 3 / Проигрыш анимации

Похожие вопросы:

ответ
Примерно так:
Заранее поставить на карте область
Событие - Юнит заходит в область
Условие - Входящий юнит = (необходимый юнит)
Действие - Включить режим кинематики (скрыть интерфейс), и так далее...
Выключить этот триггер (чтобы не повторялось сначала)
Вот статья по регионам, камерам, спецэффектам:

23

» WarCraft 3 / Проблема с эффектом

Похожие вопросы:

ответ
~8gabriel8:
Это жесть, что ты сделал) Этот русификатор триггеров уж такую муть содержит, что ты просто какую-то белиберду сотворил. Исправил до рабочего вида, но чтобы совсем красиво было, это не ко мне, а к джассерам. Просто времени мало на всё, а исправление этих триггеров затратило его довольно много.
ответ
чесн, в этом триггере прекрасно все
от точки, которая создается, не используется, но удаляется
пика группы юнитов, которые все суммарно сколько их на карте нанесут бедной цели урон
и до атакованного юнита, которого вообще здесь не может быть)

что по сути, так я хз как можно прозевать "Цель способности", или как оно у вас называется в русифицированных триггерах. на стандартной версии это target of ability being cast
цикл здесь скорее всего не нужен, если конечно только смысл действительно в том что бы брать всех огров на карте и наносить цели урон.
ответ
Остальные не помню, откуда.
Сборку игры я спрашивал.
WAGARAX:
Время - 1.1 сек
Верни 5 секунд в игровых константах.
А ещё перезагрузи компьютер.

23

» WarCraft 3 / Смена модели героя

Похожие вопросы:

ответ
  1. Чтобы иметь и модель с обычной текстурой и с другой, с помощью программы для извлечения моделей из Warcraft 3 (я пользуюсь обычно Warcraft 3 Viewer, поищи на сайте), там ищешь справа в папках твою модель, извлекаешь её к себе на компьютер.
  1. Потом открываешь программой mdlvis (основная программа для моделлинга, тоже здесь есть) модель, сразу выделяешь её и нажимаешь кнопку UV-карты или модули - редактор текстур.
  1. Внизу есть путь для текстуры, измени на название скачанной. Нажми enter, сохрани модель.
  1. Если текстура специально для той модели, переходи к следующему пункту.
  1. Кинь текстуру и модель в папку с вариком и открывай WE. У тебя стандартная модель и модель с другой текстурой.

Возможно, звучит сложно, но я привык, несколько кликов - и текстура изменена.
ответ
Есть способность "Тёмный", если дать её юниту, то он заменится на юнит указанный в способности.У такого варианта наименьшее число неудобств.
ответ
Если смена модели должна пройти без потери функциональности юнита - морфом или способностью "тёмный".
ответ
создавайте новых юнитов ручками это будет быстрее чем вы изучите мемхак и поймёте как использовать функцию смены модели
function ChangeUnitModelTo takes unit u, string modelpath returns nothing
	local integer a
	local integer s
    call MakeModelAsDefault(u,modelpath)
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		set a=RMem(LastConvertedHandle)+0x88
		if a>0 then
			set a=RMem(a)
			if a>0 then
				set s=GetStringAddress(modelpath)
				call CallThisCallWith3Args(a,LastConvertedHandle,s,1)
			endif
		endif
	endif
endfunction

function ChangeUnitPortraitTo takes unit u, string modelpath returns nothing
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		call CallThisCallWith3Args(GameDLL+0x33ADC0,LastConvertedHandle,GetStringAddress(modelpath),1)
	endif
endfunction
В карте про сларков таком способом меняется модель лягушки после эволюции
ответ
Яд, и всё работает.

23

» WarCraft 3 / Наведение мыши на юнита

Похожие вопросы:

ответ
Хозяин Миров, для начала прочитать весь список функций
или научится юзать поиск по функциям
ибо GetRandomInt(n,m)
где n начало промежутка из которого берутся числа а m конец

23

» WarCraft 3 / Атака юнита

Похожие вопросы:

ответ
Посмотри код её приказа и отдавай через приказ, в чём проблема?
Способности через GUI только стандартные кастуются и те, что имеют такой же приказ.
ответ
Ох, увы наверное никак, как не пытались мы, не нашли ничего толкового

23

» WarCraft 3 / Сделать один лимит у здания с другим зданием

Похожие вопросы:

ответ
~8gabriel8:
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.

С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.

Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.

Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.

На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.

Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.

Нашёл твои вопросы:
В них бы и спрашивал, что непонятно. А то тебе отвечают, а ты игнорируешь, словно очень умный.
Тебе даже вариант без триггеров для четвёртого пункта сделали: xgm.guru/p/wc3/230191/comments?postid=426457#comment5

23

» WarCraft 3 / Утечки памяти

Похожие вопросы:

ответ
Да. При чем две.( Position of Dying unit ).
скрин скинул выше, но там ошибка. И если раскрыть, то обнаруживается еще одна утечка: на гуи Point(0,0), а на jass эта команда называется по-другому Location(0,0), эта функция создает точку
раскрыть
попробуй раскрутить, и использовать эту
native CreateItem takes integer itemid, real x, real y returns item
через CS: call CreateItem( id, GetUnitX(u), GetUnitY(u))
где id - ид-номер типа предмета, u - юнит. Ввести тип предмета, и юнита нужно.
можно еще запомнить как-то, чтобы к предмету как-то обращаться
через CS: set it = CreateItem( id, GetUnitX(u), GetUnitY(u))
где it - переменная предмета. Объявить переменную и обращаться
ответ
zontik2012 нет, не является утечкой. Если бы ты крепил эффект к точке, к примеру в позиции юнита, причем не удалял бы эту точку потом - то это была бы утечка
ответ
но условие можно переделать как угодно...например для входящего юнита в область это только пример того как записать диалог в таблицу и очищать хэндл чтобы не вызвал утечек
NazarPunk:
потом я его очищаю
Кто первый клик, того и тапки))
)))
принцип наверное понятен?
можно и не очищать диалог при входе в область hero spawn а потом но лучше очищать заранее
теперь так выглядит
спасибо за ответы

23

» WarCraft 3 / Поиск карты

Похожие вопросы:

ответ
"давным давно" это сколько лет назад? И что-нибудь поподробнее. Выживание кем? Какой геймплей?
ответ
Похоже, это таки важный параметр. Будет учтено.
ответ
~8gabriel8:
Holy War?
Как раз за жуков Вадим играет:
Можно выбирать режимы против крипов или против других игроков.

Вкладка была открыта, но ответ Sheridan_75 не высветился.
ответ
Могу понакидать карт с качественными (в какой-то мере) нестандартными расами, т.к 23 расы не особо хорошо сделаны.
ответ
Wc3MapAnticheatAntivirus - Сканер карт [Вирусы,Читпаки,Читы,Ники]. Автор - "Abso". Название программы вбей в гугле, там будет единственная ссылка где скачать.

23

» WarCraft 3 / Проблемы с анимациями

Похожие вопросы:

ответ
nvc123:
Nyanta, для начала дебаг сделать как написано в статье
Сделал. Триггер работает как нужно. При входе всегда пишет "Вход!", при выходе - "Выход!". Порядок текста не меняется.
В общем, проблема, почему-то, была в названии анимации. Открыл модель через MdlVis и назвал анимации "родными" словами Stand, Walk, Death. Стало работать как надо.
Спасибо Rare за
Rare:
ставь скорость анимации на 0%
И nvc123 за то, что натолкнул на мысль этим)
nvc123:
конфликт триггеров,неправильный проигрыш анимаций
ответ
Анимация кости базы при death сместилась у конечной точки в линейке анимации. Поправил. В игре потестил, работает. Рассчитать границы нужны когда делаешь новые или изменяешь старые анимации, одна из причин чтоб анимация не сместилась и была на своем месте. Но в твоем случае она сразу не помогла.
ответ
скорее всего связано с кешированием данных, попробуй первым на карту занружать юнитов, и только потом декорации
ответ
XGM Bot:
Похожие вопросы:

ответ
nvc123:
Nyanta, для начала дебаг сделать как написано в статье
Сделал. Триггер работает как нужно. При входе всегда пишет "Вход!", при выходе - "Выход!". Порядок текста не меняется.
В общем, проблема, почему-то, была в названии анимации. Открыл модель через MdlVis и назвал анимации "родными" словами Stand, Walk, Death. Стало работать как надо.
Спасибо Rare за
Rare:
ставь скорость анимации на 0%
И nvc123 за то, что натолкнул на мысль этим)
nvc123:
конфликт триггеров,неправильный проигрыш анимаций
ответ
Ошибка при работе с MdlVis. Попробуй открыть модель в версии 1.40, там должно изменение видимости в ключевых кадрах должно заработать. Однако советую сделать копию модели, т.к. 1.40, если не изменяет память, ломает уже настроенную видимость.
ответ
Лучше проверить, присоединён ли он к тем же костям, что и соседние вершины. Если нет — присоединить. Если да, то как сказали Melissa и nvc123.
ответ
Анимация кости базы при death сместилась у конечной точки в линейке анимации. Поправил. В игре потестил, работает. Рассчитать границы нужны когда делаешь новые или изменяешь старые анимации, одна из причин чтоб анимация не сместилась и была на своем месте. Но в твоем случае она сразу не помогла.
ответ
скорее всего связано с кешированием данных, попробуй первым на карту занружать юнитов, и только потом декорации

ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.

23

» WarCraft 3 / Не работает триггер (исследование)

Похожие вопросы:

ответ
Filius Dei:
я так и не понял почему ты не можешь просто сделать как улучшение что не так с улучшением как в обычном случае.
дело в описании, вот и не могу так сделать,если сделать через улучшение здания, то при наведении на иконку вплывает подсказка, та же подсказка что будет и у самого здания в списке построек у светлячка, тоесть если делать через улучшение (по идее этот же юнит должен быть и в списке построек (а он там есть) ту подсказку которую я хочу будет лишней. вот пример: Древо жизни превращается в древо мира, при этом все союзные юниты вблизи древа получают повышеную регенерацию здоровья. (а теперь представь что эта подсказка будет в списке построек у светлячка, вообще не то)
Решил проблему путем выбора древа когда истекает однократный таймер, также подумал и решил что наверно лучше делать через способности, а не исследования. Но у меня остался один вопрос, если этот тригер отвечающий за применения этих способностей будет использовать несколько игроков, я не знаю будет ли использоватся оно коректно или нет, также и с отдельным триггером Таймер. Вот что вышло в данный момент:
ответ
Событие: Юнит завершает исследование.

23

» WarCraft 3 / Помогите найти карту

Похожие вопросы:

ответ
Увы но нет... Главная особенность той карты что все герои открываются по мере накопления очков за игру на карте, они не открыты сразу и не походу первой катки открываются а лишь с накоплением общих баллов. Я весь мозг сломал уже, в попытках вспомнить. Эх...
ответ
не карта, но есть подозрение, что это оно
ответ
По описанию похожа на Necris.
ответ
konvan5:
Может это "Тьма против живых"?
Вот глянь по видео, оно ли

Карта уже не слабо развилась, может отличаться от того, что ты помнишь новыми локациями и возможностями.
Да оно спасибо большое

23

» WarCraft 3 / Не работает озвучка юнита

Похожие вопросы:

ответ
Установить локально для нужного игрока альтернативную иконку (прозрачную), а так же самое здание или сделать его невидимым.
ответ
8gabriel8:
Я пробовал через все форматы
Простите, но значения точно такие у меня. Не получилось
Да ещё я был ооочень далек от пк и озвучки, я не мог отправить данные.
Ты чувствуешь непоследовательность в своих комментариях? Что пробовал кучу форматов, а значит мог банально перепутать какие-то параметры, но уверен, что параметры именно такие, как указал, при этом ооочень далек от ПК, чтобы ещё раз перепроверить себя.
Я только 10 мин назад проверил, и посмотрел, точно так сделал как сказали (кроме таблицы) не работают, теперь сам сделаю по своему.
А потом ещё:
Не суди строго :)
И минус влепил Hate!
Я просто попросил, ничего обидного нет, с правильной точки зрения.
За идиотов нас здесь считаешь? Пришёл сюда к идиотам с вопросами.
Я никого не считаю идиотом, и даже сам попросил не судить строго, чтоб какой-то РЕАЛЬНЫЙ ИДИОТ не жаловался мне! Я создаю свои карты и мне нужны св-ва и данные для улучшения .
Может быть ты и есть идиот поскольку считаешь что я думаю плохое о других, но не остальные.
Читал, что в архиве war3patch.mpq файл UI\SoundInfo\UnitsAckSounds.slk надо взять и добавить в него новые сеты озвучки.
Спасибо тема закрыта.

23

» WarCraft 3 / Warcraft 3 1.31

Похожие вопросы:

ответ
Держите, с поддержкой любых патчей
ответ
Включить локальные файлы и кинуть ролики в <корневая папка игры>\Movies.
ИЛИ
Попробовать кинуть ролики в <документы пользователя>\WarCraft III\Movies.
Как включить локальные файлы
ответ
Программой CascView www.zezula.net/en/casc/main.html
ответ
XGM Bot:
Похожие вопросы:

ответ
Бэкапы надо было делать, мсье. Перед внесением каких-либо серьезных изменений.
ответ
Проблема решена.
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)